package com.zut.Service.problemImpl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zut.Annotations.cache;
import com.zut.Pojo.Result;
import com.zut.Pojo.problem.Problem;
import com.zut.Service.problemTag;
import com.zut.dao.ProblemDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service("problemImpl")
public class problemImpl extends problemTag {
    @Autowired
    private ProblemDao problemDao;

    @Override
    public Result GetSelectedProblems(int currentPage,int size) {
        LambdaQueryWrapper<Problem> queryWrapper = Wrappers.lambdaQuery();  // 创建一个LambdaQueryWrapper对象，用于构建查询条件
        Page<Problem> page = new Page<>(currentPage, 10);  // 创建一个Page对象，表示查询的分页信息，每页显示5条记录，查询第1页的数据
        try {
            IPage<Problem> problemPage = problemDao.selectPage(page, queryWrapper);  // 调用problemDao的selectPage方法，查询满足条件的分页数据
            System.out.println("总页数：" + problemPage.getPages());  // 打印总页数
            System.out.println("总记录数：" + problemPage.getTotal());  // 打印总记录数
            problemPage.getRecords().forEach(System.out::println);  // 遍历分页数据，打印每条记录
            if(problemPage.getRecords().isEmpty()){  // 如果分页数据为空
                return Result.builder().desc("查询异常！").build();  // 返回一个描述为"查询异常"的Result对象
            }
            return Result.builder().data(problemPage.getRecords()).build();  // 返回一个包含分页数据的Result对象
        } catch (Exception e) {
            e.printStackTrace();  // 打印异常堆栈信息
            return Result.builder().desc("服务异常！").build();  // 返回一个描述为"服务异常"的Result对象
        }




    }

    @Override
    @cache(nameSpace = "problem",key="total1")
    public long GetTotalProblems() {
        Long count = problemDao.selectCount(null);
        if (count != null) {
            System.out.println(count);
            return count;
        } else {
            // 处理空指针异常，例如抛出自定义异常或返回错误信息
            throw new NullPointerException("Count is null");
        }
    }

    @Override
    public Result GetProblemInfo(String problemId) {
        // 从problemDao中根据problemId查询问题信息
        Problem problem = problemDao.selectById(problemId);

        // 构建返回结果，将查询到的问题信息作为数据返回
        return Result.builder().data(problem).build();
    }



}
